// $.fn.slide
// @extends jquery-1.10.2
// @fileOverview 幻灯片
// @author BW
// @email
// @site
// @version 0.1
// @date 2015-01-14
// Copyright (c) 2014-2015 BW
// @example
// $(".slide").slide({style:"click"});
(function($) {
    $.fn.slide = function(options) {
        var $pages = this.find('ul:first');
        var $nav = $pages.next();
        var defaults = {
            style: "mouseover", //手动切换图片样式，例如：click
            time: 0, //自动切换图片功能，0代表无自动切换功能
            animate: false
        };
        var opts = $.extend({}, defaults, options);

        var initSlide = function() {
            $pages.find('li:first').css('display', 'none').nextAll().css('display', 'none');
            $pages.find('li:first').addClass('display').css('display', 'block');
            $nav.find('li:first').removeClass('display').nextAll().removeClass('display');
            $nav.find('li:first').addClass('display');
            var prev_index = 0;
            var my_animate = function(obj) {
                if (opts.animate != false) {
                    switch (opts.animate) {
                        case "style1":
                            var $children = obj.children();

                            if (obj.index() > prev_index) {
                                $children.css({
                                    'margin-left': $children.width() + 'px'
                                }).animate({
                                    marginLeft: "0px"
                                }, 100);
                            } else {
                                $children.css({
                                    'margin-left': '-' + $children.width() + 'px'
                                }).animate({
                                    marginLeft: "0px"
                                }, 100);
                            }
                            break;
                        case "style2":
                            var $img = obj.find('a').css({
                                opacity: '0',
                                filter: 'alpha(opacity=0)'
                            });
                            setTimeout(function() {
                                $img.css({
                                    opacity: '1',
                                    filter: 'alpha(opacity=100)'
                                });
                            }, 50);
                            break;
                        default:
                    }
                }
            };
            var change = function() {
                var now_index = $(this).index();
                if (now_index != prev_index) {
                    $nav.find('li:first').removeClass('display').nextAll().removeClass('display');
                    $pages.find('li:first').removeClass('display').css('display', 'none').nextAll().removeClass('display').css('display', 'none');
                    $(this).addClass('display');
                    var $now_li = null;
                    if (now_index == 0) {
                        $now_li = $pages.find('li:first').addClass('display').css('display', 'block');
                    } else {
                        $now_li = $pages.find('li:first').nextAll().eq(now_index - 1).addClass('display').css('display', 'block');
                    }
                    my_animate($now_li);
                    prev_index = now_index;
                }
            };
            $nav.find('li:first').on(opts.style, change).nextAll().on(opts.style, change);
            if (opts.time > 0) {
                var scroll = function(index) {
                    var scroll_timer = setInterval(function() {
                        if (index == 5) {
                            index = -1;
                        }
                        index++;
                        $nav.find('li.display').removeClass('display');
                        $nav.find('li').eq(index).addClass('display');
                        $pages.find('li:first').removeClass('display').css('display', 'none').nextAll().removeClass('display').css('display', 'none');
                        var $now_li = null;
                        if (index == 0) {
                            $now_li = $pages.find('li:first').addClass('display').css('display', 'block');
                        } else {
                            $now_li = $pages.find('li:first').nextAll().eq(index - 1).addClass('display').css('display', 'block');
                        }
                        my_animate($now_li);
                        prev_index = index;
                    }, opts.time, index);
                    return scroll_timer;

                };
                var scrollTimer = scroll(0);
                $pages.find('li').on('mouseover', function() {
                    clearInterval(scrollTimer);
                }).on('mouseleave', function() {
                    scrollTimer = scroll($(this).index());
                });
                $nav.find('li').on('mouseover', function() {
                    clearInterval(scrollTimer);
                }).on('mouseleave', function() {
                    scrollTimer = scroll($(this).index());
                });
            }
        };
        return this.each(function() {
            initSlide();
        });
    };
})(jQuery);

// $.fn.picture_nav
// @extends jquery-1.10.2
// @fileOverview 图片导航
// @author BW
// @email
// @site
// @version 0.1
// @date 2015-01-14
// Copyright (c) 2014-2015 BW
// @example
// $(".slide").picture_nav({data: picture_nav_data});
(function($) {
    $.fn.picture_nav = function(options) {
        var defaults = {
            style: "click",
            data: ""
        };
        var opts = $.extend({}, defaults, options);
        var $this = this;
        var init = function() {
            var plugins_pic_nav = '<div class="plugins_picture_nav clearfix"><div class="p_click p_prev" onfocus="this.blur();"><span></span></div><div class="p_click p_next" onfocus="this.blur();"><span></span></div></div>';
            var $ul = $('<ul class="clearfix"></ul>');
            if (opts.data.length > 0) {
                $.each(opts.data, function(index, val) {
                    var $li;
                    if (index < 3) {
                        $li = $('<li class="display"></li>');
                    } else {
                        $li = $('<li></li>');
                    }
                    if (index == 1) {
                        $li.addClass('center');
                    }
                    $li.append('<a href="#"><img src=' + val + ' alt=""/></a>');
                    $ul.append($li);
                });
            }
            var $plugins_pic_nav = $(plugins_pic_nav);
            $plugins_pic_nav.find('div.p_prev').after($ul);
            $this.append($plugins_pic_nav);
            $plugins_pic_nav.find('.p_prev').on(opts.style, function() {
                var num = $ul.find('li').length;
                var n = 3 - (num % 3);
                if (num > 0) {
                    var $display_li_all = $ul.find('li.display');
                    $display_li_all.removeClass('display');
                    var $first_display = $display_li_all.first();
                    for (var i = 0; i < 3; i++) {
                        if ($first_display.index() > 0) {
                            $first_display = $first_display.prev().addClass('display');
                            if (i == 1) {
                                $first_display.addClass('center');
                            }
                        } else {
                            if (num % 3 == 0) {
                                $first_display = $ul.find('li').last().addClass('display');
                                if (i == 1) {
                                    $first_display.addClass('center');
                                }
                            } else {
                                if (n == 0) {
                                    $first_display = $ul.find('li').last().addClass('display');
                                    if (i == 1) {
                                        $first_display.addClass('center');
                                    }
                                }
                                n--;
                            }
                        }
                    }
                }
            });
            $plugins_pic_nav.find('.p_next').on(opts.style, function() {
                var num = $ul.find('li').length;
                if (num > 0) {
                    var $display_li_all = $ul.find('li.display');
                    $display_li_all.removeClass('display');
                    var $last_display = $display_li_all.last();
                    if ($last_display.index() == (num - 1)) {
                        $last_display = $ul.find('li').first();
                    }
                    for (var i = 0; i < 3; i++) {
                        if ($last_display.index() == 0) {
                            $last_display = $last_display.addClass('display').next().addClass('display center').next().addClass('display');
                            break;
                        } else {
                            $last_display = $last_display.next().addClass('display');
                            if (i == 1) {
                                $last_display.addClass('center');
                            }
                        }
                    }
                }
            });
        };
        return this.each(function() {
            init();
        });
    };
})(jQuery);

// $.fn.select_beautiful
// @extends jquery-1.10.2
// @fileOverview select美化
// @author BW
// @email
// @site
// @version 0.1
// @date 2015-01-14
// Copyright (c) 2014-2015 BW
// @example
// $(".phone-select").select_beautiful();
(function($) {
    $.fn.select_beautiful = function(options) {
        var $this = this;
        var init = function() {
            var $options = $this.find('option');
            var $select = $('<div class="plugins_select"></div>');
            var $top = $('<div class="plugins_select_top"><span></span><div class="plugins_select_arrow"></div></div>');
            var $pop = $('<ul></ul>');
            $top.find('span').text($options.eq(0).text());
            $this.parent().prepend($select.addClass($this.attr('class')));
            $this.remove();
            $select.append($top).append($pop);
            if ($options.length > 0) {
                for (var i = 0; i < $options.length; i++) {
                    $pop.append($('<li><span>' + $options.eq(i).text() + '</span></li>'));
                }
                $pop.find('li').width($top.width()).first().addClass('hover choose');
                $pop.height(($pop.find('li').height()) * ($options.length)).css('display', 'none');
            }
            $top.on('click', function() {
                $pop.css('display', 'block');
            });
            $pop.find('li').on('mouseover', function() {
                $pop.find('li.hover').removeClass('hover');
                $(this).addClass('hover');
            });
            $pop.find('li').on('click', function() {
                $pop.find('li.choose').removeClass('choose');
                $(this).addClass('choose');
                $pop.css('display', 'none');
                $top.find('span').text($(this).text());
            });
            $select.on('mouseleave', function() {
                $pop.find('li.hover').removeClass('hover');
                $pop.find('li.choose').addClass('hover');
                $pop.css('display', 'none');
            });
        };
        return this.each(function() {
            init();
        });
    };
})(jQuery);

// $.fn.tab
// @extends jquery-1.10.2
// @fileOverview select美化
// @author BW
// @email
// @site
// @version 0.1
// @date 2015-01-14
// Copyright (c) 2014-2015 BW
// @example
// $(".tab").tab();
(function($) {
    $.fn.tab = function(options) {
        var defaults = {
            onlick: true,
            time: 0
        };
        var opts = $.extend({}, defaults, options);

        var $this = this;
        var $title = $this.find('ul:first');
        var $content = $title.next().eq(0);

        var init = function() {
            $title.find('li:first').addClass('display');
            $content.find('li:first').addClass('display').css('display', 'block').nextAll().css('display', 'none');

            //A标签不能点击
            if (opts.title_onclick == false) {
                $title.find('li a').removeAttr('href').removeAttr('onclick');
            }

            $title.find('li').on('mouseenter', function() {
                var num = $(this).index();
                setTimeout(function() {
                    $this.display(num);
                }, opts.time);
            });
        };

        this.display = function(index) {
            return this.each(function() {
                $title.find('li.display').removeClass('display');
                $title.find('li').eq(index).addClass('display');
                var $first = $content.find('li:first');
                $first.removeClass('display').css('display', 'none').nextAll().removeClass('display').css('display', 'none');
                if (index == 0) {
                    $first.addClass('display').css('display', 'block');
                } else {
                    index--;
                    $first.nextAll().eq(index).addClass('display').css('display', 'block');
                }
            });
        };
        return this.each(function() {
            init();
        });
    };

})(jQuery);

// $.fn.swing
// @extends jquery-1.10.2
// @fileOverview 鼠标移入后元素晃动效果
// @author BW
// @email
// @site
// @version 0.1
// @date 2015-01-14
// Copyright (c) 2014-2015 BW
// @example
// $(".test").swing();
(function($) {
    $.fn.swing = function(options) {
        var defaults = {
            obj: null,
            begin: {
                marginLeft: '-10px'
            },
            end: {
                marginLeft: '0px'
            }
        };
        var opts = $.extend({}, defaults, options);

        var $this = this;
        var init = function() {
            $.each($this, function(index, val) {
                if (opts.obj == null) {
                    $(val).on('mouseenter', function() {
                        $(this).animate(opts.begin, 200);
                    }).on('mouseleave', function() {
                        $(this).animate(opts.end, 200);
                    });
                }
                if (typeof opts.obj == 'string') {
                    $(val).on('mouseenter', function() {

                        $(this).find(opts.obj).animate(opts.begin, 200);
                    }).on('mouseleave', function() {
                        $(this).find(opts.obj).animate(opts.end, 200);
                    });
                }
            });
        };
        init();
        return $this;
    };

})(jQuery);

// $.fn.Scroll
// @extends jquery-1.10.2
// @fileOverview 循环滚动插件
// @author BW
// @email
// @site
// @version 0.1
// @date 2015-01-14
// Copyright (c) 2014-2015 BW
// @example
// $(".demo").Scroll({style:"click"});
(function($) {
    $.fn.Scroll = function(options) {
        var $ul = this.find('ul:first');
        var defaults = {
            start_display_index: 1, //从第几索引开始显示
            display_number: 5, //每次显示的个数
            scroll_number: 3, //每次滚动的个数
            time: 1000, //滚动的时间间隔
            animate: false
        };
        var opts = $.extend({}, defaults, options);

        var init = function() {
            $ul.find('li:first').css('display', 'none').nextAll().css('display', 'none');
            var $next_lis = $ul.find('li:first').addClass('display').css('display', 'block').nextAll();
            var last_index = $next_lis.last().index();
            for (var i = 0; i < opts.number - 2; i++) {
                $next_lis.eq(i).addClass('display').css('display', 'block');
            }

            if (opts.time > 0) {
                var scroll = function(index) {
                    var scroll_timer = setInterval(function() {
                        if (index == last_index) {
                            index = -1;
                        }
                        //index++;
                        $pages.find('li:first').removeClass('display').css('display', 'none').nextAll().removeClass('display').css('display', 'none');
                        var $now_li = null;
                        if (index == 0) {
                            $now_li = $pages.find('li:first').addClass('display').css('display', 'block');
                        } else {
                            $now_li = $pages.find('li:first').nextAll().eq(index - 1).addClass('display').css('display', 'block');
                        }
                        my_animate($now_li);
                        prev_index = index;
                    }, opts.time, index);
                    return scroll_timer;

                };
                var scrollTimer = scroll(opts.number - 1);
            }
        };
        return this.each(function() {
            initSlide();
        });
    };
})(jQuery);
